Increasingly, enterprises are providing their services and data to consumers over the Internet and the World-Wide Web (WWW). To do this, enterprises are developing separate interfaces that link their backend systems to a WWW interface.
A few popular techniques have emerged to assist enterprises in making the transition to the WWW easier.
A first technique is really an architectural approach and is referred to as Representational State Transfer (REST). WWW Interfaces that comply with REST are said to be “RESTful.”
A REST interface is deployed for clients and servers to interact with one another over the Internet. Clients initiate requests that are processed by servers and responses are returned from the servers to the clients. Requests are in the form of nouns (resource identifiers) and verbs (actions) that are to be taken on the nouns. The vocabulary for the verbs are constrained to a few universal verbs, such as GET, PUT, POST, and DELETE. The nouns are used for uniquely identifying a resource over the Internet, such as by an Internet Protocol (IP) Address in the form of a Uniform Resource Locator (URL) link or Uniform Resource Identifier (URI).
Another popular technique is a communication protocol called Simple Object Access Protocol (SOAP). SOAP allows more customization than does RESTful interfaces.
That is, more feature/function can be achieved with greater developer control when actions (verbs) can be user-defined for any given situation, which are what SOAP permits. However, with the increased feature/function comes the loss of interoperability. That is, two or more resources (nouns) are harder to seamlessly interface with one another over the Internet when the potential actions (verbs) increase and are not controlled. Enterprises appear to prefer ease of integration over increased feature/function.
Thus, REST interfaces are growing in the industry at significant rates. REST is in fact replacing SOAP-based services as the preferred architecture of enterprises. One main reason for this is that the Application Programming Interface (API) for REST is easy to understand, constrained, and simple to use. This simplicity of integration also has some drawbacks.
For example, because REST interfaces are simplistic many feature/functions of enterprise provided services can be difficult to achieve, cumbersome, or lost entirely when transitioning to RESTful interfaces.